package com.zuoye3;
/**
 * 编程获取两个指定字符串中的最大相同子串。
 *  如： s1="asdafghjka", s2="aaasdfg" 他们的最大子串为"asd"
 *  提示： 将短的那个串进行长度依次递减的子串与较长的串比较。
 */

public class SameSubstringTest {
    public static void main(String[] args) {
        String str1 = new String("asdafghjka");
        String str2 = new String("aaasdfg");
        String str = Fun(str1,str2);
        System.out.println("str1="+str1);
        System.out.println("str2="+str2);
        System.out.println("最大相同子串为："+str);
    }
    //声明一个返回最大相同子串的成员方法
    public static String Fun(String s1, String s2){
        //max代表长度更长的字符串，min代表长度更短的字符串
        String max = (s1.length()>s2.length())?s1:s2;
        String min = (s1.length()<s2.length())?s1:s2;

        for(int i = 0;i<min.length();i++){
            for(int j = 0,k=min.length()-i;k<min.length();j++,k++){
                //分割成子串，j，k分别控制不同方向缩减
                String temp = min.substring(j,k);
                //字符串的contains方法判断是否包含子串
                if(s1.contains(temp)){
                    return temp;
                }
            }
        }
        return null;
    }
}
